function [meteorologos, met_error] = aprenderDBN(n, k)

% Recibe un mdp que genera experiencia (algo que haga doEsperar)

% Recibe n=nro factores, k=max in-degree (max nro de padres). n=6, k=3 en el ejemplito de Nucho
% implementado en doEsperar.

% Para cada factor n, genera (n choose k) meteorologos, donde cada
% meteorologo le va a prestar atencion a una combinacion posible de padres.

dominio_meteorologos = combntns(1:n,k);

% cada meteorologo mira para el factor i como depende de cada
% posible combinación de los 3 factores que mira y además cuenta cuantas
% veces sucedio
meteorologos = zeros(n,length(dominio_meteorologos),2^k,2);

num_pedidos = 10000;
T=200;
met_error = zeros(n,length(dominio_meteorologos),2^k,2);

s = randi([0 1],1,n);

for e=1:num_pedidos
    s_next = doEsperar(s);

    for i=1:n
        for m=1:length(dominio_meteorologos) %para cada meteorologo del factor i
            s_value = bi2de(s(dominio_meteorologos(m,:))) + 1;
            
            if(meteorologos(i, m, s_value,2)<T)
                meteorologos(i, m, s_value,1) = meteorologos(i, m, s_value, 1) + s_next(i);
                meteorologos(i, m, s_value,2) = meteorologos(i, m, s_value, 2) + 1;
            elseif (met_error(i,m,s_value,2)<T)
                prediccion = meteorologos(i,m,s_value,1) ./ meteorologos(i,m,s_value,2);
                met_error(i,m,s_value,1) = met_error(i,m,s_value,1) + (prediccion - s_next(i))^2;
                met_error(i,m,s_value,2) = met_error(i,m,s_value,2) + 1;
            end
        end
    end
    s = s_next;
end

% Para cada observacion de doEsperar:
%   Mandarsela a los meteorologos para que actualicen sus estimaciones.
%   Los meteorologos deberian contar nro de ejemplos que tienen para cada
%   entradita.
%   Si tienen mas de M, que empiecen a predecir y estimar su error:
%   diferencia cuadrada entre estimacion y observacion. Se van sumando.

% Despues de un rato de estimar error, podes pedir, para cada factor, cual
% es el meteorologo con menor error. O sea, cuales son los padres.

end